#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>
#include <string.h>

typedef int SDataType;
typedef struct Queue
{
	struct QueueNode* next;
	SDataType data;
}Queue;

typedef struct QueueNode
{
	struct Queue* head;
	struct Queue* end;
}Node;

void QueueInit(Node* q);
bool QueueEmpty(Node* q);
void QueuePush(Node* q, SDataType x);
void QueuePop(Node* q);
SDataType QueueFront(Node* q);
SDataType QueueBack(Node* q);
int QueueSize(Node* q);
void QueueDestroy(Node* q);